﻿/*
SINACOR - BMF&Bovespa
Arquivo: IDivergenciaCentralDepositaria.cs
Criado em: 01-abr-2010 18:07:58
Arquiteto Responsável: WGeneroso.prg
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ComponentModel;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common.Exceptions.FaultContracts;


namespace Sinacor.Servico.Bovespa.Alocacao.Service.ServiceContract 
{
	[ExceptionShielding]
	[ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Alocacao.Service.ServiceContract", SessionMode = SessionMode.Allowed)]
	public interface IDivergenciaCentralDepositaria 
	{
		/// <summary>
		/// Consulta lista de divergencias de alocações com a central depositária
		/// </summary>
		/// <param name="request"></param>
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarDivergenciasCentralDepositaria")]
		List<DataContract.Response.DivergenciaCentralDepositariaResponse> ConsultarDivergenciasCentralDepositaria(DataContract.Request.FiltroDivergenciaCentralDepositariaRequest request);

    	/// <summary>
		/// Executa a conciliação das divergências de alocação com a central depositária.
		/// </summary>
		/// <param name="request"></param>
		[TransactionRequired]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ExecutarConciliacaoCentralDepositaria")]
		void ExecutarConciliacaoCentralDepositaria(DataContract.Request.FiltroDivergenciaCentralDepositariaRequest request);

		/// <summary>
		/// Obtem o Nalc válido conforme o filtro de pesquisa
		/// </summary>
		/// <param name="request"></param>
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ObterNalcValido")]
		DataContract.Response.NalcValidoResponse ObterNalcValido(DataContract.Request.FiltroNalcRequest request);

		/// <summary>
		/// Reenvia mensagem de divergência na alocação para central depositaria.
		/// </summary>
		/// <param name="request"></param>
		[TransactionRequired]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ReenviarMensagemDivergenciaCentralDepositaria")]
		void ReenviarMensagemDivergenciaCentralDepositaria(DataContract.Request.DivergenciaCentralDepositariaRequest request);

		/// <summary>
		/// Reenvia lista de mensagens de divergências de alocações de negócios na central
		/// depositária
		/// </summary>
		/// <param name="request"></param>
		[TransactionRequired]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ReenviarMensagensDivergenciasCentralDepositaria")]
		void ReenviarMensagensDivergenciasCentralDepositaria(List<DataContract.Request.DivergenciaCentralDepositariaRequest> request);
	}

}